StupidBeauty
Read times:480Posted at:Sun Mar 31 05:43:26 2013
- no title specified

Wt3.2.3文档翻译:Wt::Dbo::collection< C >类模板参考,Wt::Dbo::collection< C > Class Template Reference

详细描述

template<class C>
class Wt::Dbo::collection< C >

这是一个标准模板库(STL)的容器,用来在查询结果中遍历。

这是一个与标准模板库兼容的容器,其背后是一个用于获取数据的结构化查询语句(SQL)查询对象。

集合对象在Wt::Dbo 中有两种用途:

  • •.遍历一个查询的结果

  • •.用来映射一个多对一(Many-to-One)或多对多(Many-to-Many)关系的 “多”的那一方 (many-side)

它的迭代器满足的是输入迭代器(InputIterator)的需求,这就意味着 ,妳只能单向地 (solely)遍历 begin() end() 之间的这些结果 :交替地 读取一个元素 ,然后增加迭代器 。当这个集合被用来表示一个 查询 的结果的时候 ,妳只能对结果遍历一次 :也就是说 ,妳只能对 begin() 调用一次。

当此容器被用来反映一个查询的结果时,它本身是只读的。不过呢 ,如果牵涉到一个多对一或多对多关系的话 ,妳可以插入 insert() )及删除( erase() )其中的对象。

一般应用场景中,妳会遍历这个容器中的结果 ,用于本地处理,或者将这些结果复制到一个标准的标准模板库 (STL)容器中以便作进一步的处理。不仅仅是迭代器的虚弱保证 (weak guarantees of the iterators) 使得这种做法成为建议做法,还因为 ,在此库的当前实现中 ,所有的结构化查询语言语句都是不可重入的预准备的语句 (这种限制有可能在未来去掉):在每个会话中,对于同一个结构化查询语言语句,同一时刻只能有一个集合处于使用状态中 。所以 ,以下代码会出错:

void iterateChildren(Wt::Dbo::ptr<Comment> comment)

{

typedef Wt::Dbo::collection<Wt::Dbo::ptr<Comment> > Comments;

Comments children = comment->children;

for (Comments::const_iterator i = children.begin(); i != children.end(); ++i) {

std::cerr << "Comment: " << i->text << std::endl;

iterateChildren(*i); // 非法的用法,因为这样会导致嵌套地使用同一个查询

}

}

如果妳不确定在遍历的过程中同一个查询是不是会被重复使用的话,那么妳应当把那些结果复制到一个标准的容器中 。注意,这个复制过程中不会有大的开销 ,因为数据库对象 (dbo) 指针都是轻量级的。

void iterateChildren(Wt::Dbo::ptr<Comment> comment)

{

typedef std::vector<Wt::Dbo::ptr<Comment> > Comments;

Comments children(comment->children.begin(), comment->children.end()); // 复制到一个标准模板库容器中,放过底层的查询对象 ,以便重用

for (Comments::const_iterator i = children.begin(); i != children.end(); ++i) {

std::cerr << "Comment: " << i->text << std::endl;

iterateChildren(*i); // 现在是正确的了

}

}

在遍历一个集合之前,会话会被刷新(flushed)。这样 ,集合就会反映出任何处于待定状态 (pending)的脏(dirty)的变更。

辛迪-克劳馥

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4